package com.sword.www.leetCode.others;

/**
 * 给定精度，求整数的平方根
 * 例如： 求6的平方根，指定精度
 * 指定最小值0，最大值6，使用二分法
 *
 * @author linmeng
 * @version 1.0
 * @date 2021年12月13日 18:29
 */
public class Sqrt {
    public static void main(String[] args) {
        System.out.println(getSqrt(6, 0.01));
    }
    static double getSqrt(int num,double precision){
        double tmp,lo = 0, hi = num,mid = (lo + hi)/2;
        while (Math.abs(tmp = (mid * mid - num)) > precision){
            if (tmp>0){
                hi = (lo+hi)/2;
            }else {
                lo = (lo+hi)/2;
            }
            mid = (lo+hi)/2;
        }
        return mid;
    }
}
